home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / tdp.cci < prev    next >
Text File  |  1993-11-30  |  24KB  |  731 lines

  1. /*************************************************************************
  2. *    "tdp.cci" : テキストエディタ
  3. *************************************************************************/
  4.  
  5. #include    "tdpofs.h"
  6.  
  7. /*    tdp から txd を得るマクロ (tdp->txd)    */
  8. #define    TDP_TXDPTR(tdp)    TdpGetTxdPtr(tdp)
  9.  
  10. char    *TdpTbl_metakey[26] =
  11. {
  12.     /* A */    "$swave(cmd,note,len,Tn,wn,&,x,sp,ep,sin,a,ang,spdofs,aofs,sub)",
  13.     /* B */    "$cho(note,len,n,x,sp,ep)",
  14.     /* C */    "continue",
  15.     /* D */    "#define\\t",
  16.     /* E */    "#endif",
  17.     /* F */    "fprintf(\x22",
  18.     /* G */    "fgets(buf,len,fp);",
  19.     /* H */    ".mmltype\\tfb386\\n.fm\\t\\t\\tfmtone2\\n.pcm\\t\\tensam01\\n",
  20.     /* I */    "#include\\t",
  21.     /* J */    "#ifdef\\n#\\tdefine\\tEXT\\n#else\\n#\\tdefine\\tEXT\\textern\\n#endif\\n",
  22.     /* K */    "iskanji\x28",
  23. #if    0
  24.     /* L */    "/*\\t:*****************************************************************\\n\\t:\\n\\t:*****************************************************************\\n*/\\n",
  25. #else
  26.     /* L */    "/*************************************************************************\\n*\\n*************************************************************************/\\n",
  27. #endif
  28.     /* M */    "void\\tmain(int argc,char *argv[])\\n{\\t",
  29.     /* N */    "NORMAL",
  30.     /* O */    "if ( (fp = fopen(filename,\x22rb\x22))==NULL )\\n",
  31.     /* P */    "printf(\x22",
  32.     /* Q */    "exit();",
  33.     /* R */    "return",
  34.     /* S */    "$slide(cmd,note,len,n,&,x,sp,ep)",
  35.     /* T */    "typedef",
  36.     /* U */    "unsigned",
  37.     /* V */    "$vib(note,len,n,sin,sp,a,spd,ang)",
  38.     /* W */    "$wave(cmd,note,len,n,&,sin,sp,a,spd,ang)",
  39.     /* X */    "FALSE",
  40.     /* Y */    "TRUE",
  41.     /* Z */    "register"
  42. };
  43.  
  44. /*************************************************************************
  45. *    テキストエディタ・システムの初期化
  46. *************************************************************************/
  47.  
  48. int        TdpUsr_sysInit()
  49. {
  50.     int        i;
  51.  
  52. #ifdef    _TAROPYON_SYSTEM
  53.     TdpHistFlag = TRUE;    /* 編集履歴有効    */
  54. #endif
  55.  
  56.     Apl_stdWinSizeSet( APL_TYPE_TDP, (2+ 4+(6*80)+20+2), (358-12*3) );
  57.  
  58.     for ( i = 0; i < 26; ++i )
  59.         TdpMetaKeySet( 'A'+i, TdpTbl_metakey[i]);
  60.  
  61.     return (NORMAL);
  62. }
  63.  
  64. int        TdpUsr_sysTerm()
  65. {
  66.     return (NORMAL);
  67. }
  68.  
  69. /*************************************************************************
  70. *    ウィンドゥがオープンされたときに呼び出される
  71. *-------------------------------------------------------------------------
  72. *    キーカスタマイズ等はここで行うと良い
  73. *************************************************************************/
  74.  
  75. int        TdpUsr_openFunc( char *tdp )
  76. {
  77.     char    *txd;    /* TXD_T */
  78.  
  79. #ifdef    CT
  80. #    undef    CT
  81. #endif
  82. #define    CT    KA_BIT_CTRL
  83. #ifdef    SH
  84. #    undef    SH
  85. #endif
  86. #define    SH    KA_BIT_SHIFT
  87.  
  88.     txd = TDP_TXDPTR(tdp);
  89.     TXD_cstSetKey( txd, SH|CT|KA_INS   , TXD_CALLUSRFNC, 0, "dup_line");
  90.     TXD_cstSetKey( txd,    CT|KA_RETURN, TXD_CALLUSRFNC, 0, "template");
  91.  
  92.     TXD_cstSetPfxKey( txd, CT|KA_Q     , KA_W, TXD_CALLUSRFNC, 0, "word_help");
  93.     TXD_cstSetPfxKey( txd, CT|KA_K     , KA_W, TXD_CALLUSRFNC, 0, "cut_word");
  94.     TXD_cstSetPfxKey( txd, SH|CT|KA_J  , KA_U, TXD_CALLUSRFNC, 0, "undo_info");
  95.     TXD_cstSetPfxKey( txd, SH|CT|KA_J  , KA_C, TXD_CALLUSRFNC, 0, "clear_undo_buffer");
  96.  
  97.     TXD_cstSetPfxKey( txd, SH|CT|KA_M, KA_T, TXD_CALLUSRFNC, 0, "mml_toneGen");
  98. #ifdef    _ESC_MARK_JUMP
  99.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0B00, TXD_CALLUSRFNC, 0, "jump_mark_0");
  100.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0200, TXD_CALLUSRFNC, 0, "jump_mark_1");
  101.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0300, TXD_CALLUSRFNC, 0, "jump_mark_2");
  102.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0400, TXD_CALLUSRFNC, 0, "jump_mark_3");
  103.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0500, TXD_CALLUSRFNC, 0, "jump_mark_4");
  104.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0600, TXD_CALLUSRFNC, 0, "jump_mark_5");
  105.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0700, TXD_CALLUSRFNC, 0, "jump_mark_6");
  106.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0800, TXD_CALLUSRFNC, 0, "jump_mark_7");
  107.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0900, TXD_CALLUSRFNC, 0, "jump_mark_8");
  108.     TXD_cstSetPfxKey( txd, KA_ESC, 0x0A00, TXD_CALLUSRFNC, 0, "jump_mark_9");
  109. #endif
  110.     return (NORMAL);
  111. #undef    CT
  112. #undef    SH
  113. }
  114.  
  115. /*************************************************************************
  116. *    セーブして編集を終了するときに呼ばれる
  117. *************************************************************************/
  118.  
  119. int        TdpUsr_saveFunc( char *tdp, char *fn )
  120. {
  121.     return (NORMAL);
  122. }
  123.  
  124. /*************************************************************************
  125. *    編集を終了するときに呼ばれる
  126. *************************************************************************/
  127.  
  128. int        TdpUsr_quitFunc( char *tdp )
  129. {
  130.     return (NORMAL);
  131. }
  132.  
  133.  
  134. /*************************************************************************
  135. *    イベント処理関数
  136. *************************************************************************/
  137.  
  138. int        tdpUsr_evtFunc( int evtNo, char *sbj )
  139. {
  140.     return    TDP_cmdJump( GET_EVTSBJ_PTR(sbj), evtNo );
  141. }
  142.  
  143. /*************************************************************************
  144. *    新規にファイルオープンしたときに呼び出される
  145. *************************************************************************/
  146.  
  147. int        TdpUsr_setPathname( char *tdp, char *pn )
  148. {
  149.     return (NORMAL);
  150. }
  151.  
  152. int        TDP_menu_1( char *tdp, int x, int y )
  153. {
  154.     int            ret;
  155.     char        *mnu;    /* MNU_T    */
  156.     char        *obj;    /* MNUOBJ_T    */
  157.     char        *func;
  158.  
  159.     func = "tdpUsr_evtFunc";
  160.     obj = MNU_alloc(11);
  161.     MNU_setObj(obj, 0, MNU_NOR, 'O', "File Open",        NULL, TDPCMD_FILEOPEN    ,func, tdp );
  162.     MNU_setObj(obj, 1, MNU_NOR, 'C', "File Close",        NULL, TDPCMD_FILECLOSE   ,func, tdp );
  163.     MNU_setObj(obj, 2, MNU_BLK,  0,   NULL,                NULL, 0,                  NULL, NULL);
  164.     MNU_setObj(obj, 3, MNU_NOR, 'W', "Write file",        NULL, TDPCMD_FILEWRITE   ,func, tdp );
  165.     MNU_setObj(obj, 4, MNU_NOR, 'R', "Read file",        NULL, TDPCMD_FILEREAD    ,func, tdp );
  166.     MNU_setObj(obj, 5, MNU_NOR, 'U', "Update file",        NULL, TDPCMD_FILEUPDATE  ,func, tdp );
  167.     MNU_setObj(obj, 6, MNU_NOR, 'F', "Change Filename",    NULL, TDPCMD_CHANGENAME  ,func, tdp );
  168.     MNU_setObj(obj, 7, MNU_NOR, 'E', "Edit original",    NULL, TDPCMD_EDITORIGINAL,func, tdp );
  169.     MNU_setObj(obj, 8, MNU_BLK,  0,   NULL,                NULL, 0,                  NULL, NULL);
  170.     MNU_setObj(obj, 9, MNU_NOR, 'P', "UPdate all",        NULL, TDPCMD_UPDATEALL   ,func, tdp );
  171.     MNU_setObj(obj,10, MNU_NOR, 'N', "New window",        NULL, TDPCMD_NEWWINDOW   ,func, tdp );
  172.  
  173.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU1 (FILE)" );
  174.     ret = MNU_start ( mnu );
  175.     MNU_close(mnu);
  176.     MNU_free(obj);
  177.  
  178.     return (ret);
  179. }
  180.  
  181. /*************************************************************************
  182. *    指定行に飛ぶ
  183. *************************************************************************/
  184.  
  185. int        tdp_evt_jump( int evtNo, char *sbj )
  186. {
  187.     char    *tdp;    /* TDP_T    */
  188.     char    *txd;    /* TXD_T    */
  189.     char    *dlg;    /* DLG_T    */
  190.     int        ret, ln;
  191.     char    buf[16];
  192.  
  193.     tdp = GET_EVTSBJ_PTR(sbj);
  194.     dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
  195.                         "行番号を入力してください。");
  196.     DLG_getsSetTitle( dlg, "JUMP" );
  197.     buf[0] = '\0';
  198.     ret = DLG_getsStart( dlg, 15, buf );
  199.     if ( ret > 0 && (ln = atoi(buf)) > 0 )
  200.     {
  201.         txd = TDP_TXDPTR(tdp);
  202.         TXD_jumpLine( txd, ln - 1 );
  203.     }
  204.     DLG_getsClose(dlg);
  205.     return (0);
  206. }
  207.  
  208. /*************************************************************************
  209. *    カットバッファを置換検索パターンに
  210. *************************************************************************/
  211.  
  212. int        _tdpSetRplPtn( int evtNo, char *sbj )
  213. {
  214.     char    *tdp;    /* TDP_T    */
  215.     char    *txd;    /* TXD_T    */
  216.     char    buf[256];
  217.  
  218.     tdp = GET_EVTSBJ_PTR(sbj);
  219.     txd = TDP_TXDPTR(tdp);
  220.     memset( buf, 0, 256);
  221.     if ( TXD_getCutBuf(txd,buf,256) >= 0 )
  222.         TXD_setReplacePtn( txd, buf );
  223.  
  224.     return (evtNo);
  225. }
  226.  
  227. /*************************************************************************
  228. *    カットバッファを置換文字列に
  229. *************************************************************************/
  230.  
  231. int        _tdpSetRplStr( int evtNo, char *sbj )
  232. {
  233.     char    *tdp;    /* TDP_T    */
  234.     char    *txd;    /* TXD_T    */
  235.     char    buf[256];
  236.  
  237.     tdp = GET_EVTSBJ_PTR(sbj);
  238.     txd = TDP_TXDPTR(tdp);
  239.     memset( buf, 0, 256);
  240.     if ( TXD_getCutBuf(txd,buf,256) >= 0 )
  241.         TXD_setReplaceStr( txd, buf );
  242.  
  243.     return (evtNo);
  244. }
  245.  
  246. /*************************************************************************
  247. *    カットバッファを検索パターンに
  248. *************************************************************************/
  249.  
  250. int        _tdpSetSearch( int evtNo, char *sbj )
  251. {
  252.     char    *tdp;    /* TDP_T    */
  253.     char    *txd;    /* TXD_T    */
  254.     int        len;
  255.     char    buf[256];
  256.  
  257.     tdp = GET_EVTSBJ_PTR(sbj);
  258.     txd = TDP_TXDPTR(tdp);
  259.     if ( (len = TXD_getCutBuf(txd,buf,256)) >= 0 )
  260.         TXD_setSearchPtn( txd, buf, len );
  261.  
  262.     return (evtNo);
  263. }
  264.  
  265. /*************************************************************************
  266. *    [MENU2]
  267. *************************************************************************/
  268.  
  269. int        TDP_menu_2( char *tdp, int x, int y )
  270. {
  271.     int            ret;
  272.     char        *mnu;    /* MNU_T    */
  273.     char        *obj;    /* MNUOBJ_T    */
  274.  
  275.     obj = MNU_alloc(13);
  276.     MNU_setObj(obj, 0, MNU_NOR, 'F', "Find & jump",         NULL, TXD_SEARCHALL     , NULL, tdp );
  277.     MNU_setObj(obj, 1, MNU_NOR, 'S', "Search",              NULL, TDPCMD_SEARCH     , NULL, tdp );
  278.     MNU_setObj(obj, 2, MNU_NOR, 'R', "Replace",             NULL, TDPCMD_REPLACE    , NULL, tdp );
  279.     MNU_setObj(obj, 3, MNU_NOR, 'A', "Multi replace All",   NULL, TXD_MREPLACE      , NULL, tdp );
  280.     MNU_setObj(obj, 4, MNU_NOR, '1', "Set repalce pattern", NULL, 0,       "_tdpSetRplPtn", tdp );
  281.     MNU_setObj(obj, 5, MNU_NOR, '2', "Set repalce strings", NULL, 0,       "_tdpSetRplStr", tdp );
  282.     MNU_setObj(obj, 6, MNU_NOR, '3', "Set search pattern",  NULL, 0,       "_tdpSetSearch", tdp );
  283.     MNU_setObj(obj, 7, MNU_BLK,  0,   NULL,                 NULL, 0,                NULL, NULL);
  284.     MNU_setObj(obj, 8, MNU_NOR, 'J', "Jump",                NULL, 0, "tdp_evt_jump"     , tdp );
  285.     MNU_setObj(obj, 9, MNU_NOR, 'T', "Top of text",            NULL, TDPCMD_TOPOFTEXT  , NULL, tdp );
  286.     MNU_setObj(obj,10, MNU_NOR, 'B', "Bottom of text",        NULL, TDPCMD_LASTOFTEXT , NULL, tdp );
  287.     MNU_setObj(obj,11, MNU_NOR, 'L', "Last touch",            NULL, TDPCMD_LASTTOUCH  , NULL, tdp );
  288.     MNU_setObj(obj,12, MNU_NOR, 'M', "Mark",                NULL, TDPCMD_MARK       , NULL, tdp );
  289.  
  290.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU2 (EDIT)" );
  291.     ret = MNU_start ( mnu );
  292.     MNU_close(mnu);
  293.     MNU_free(obj);
  294.  
  295.     if ( ret > 0 )
  296.         return TDP_cmdJump(tdp,ret);
  297.     else
  298.         return (ret);
  299. }
  300.  
  301. /*************************************************************************
  302. *    [MENU3]
  303. *************************************************************************/
  304.  
  305. int        TDP_menu_3( char *tdp, int x, int y )
  306. {
  307.     int            ret;
  308.     char        *mnu;    /* MNU_T    */
  309.     char        *obj;    /* MNUOBJ_T    */
  310.     char        *txd;
  311.     int            md;
  312.     UINT        u[4];
  313.     char        undoMsg[80], redoMsg[80];
  314.  
  315.     txd = TDP_TXDPTR(tdp);
  316.  
  317.     obj = MNU_alloc(12);
  318.     if ( TXD_getUndoInfo( txd, u ) == NORMAL && u[3] > 0 )
  319.     {
  320.         md = MNU_NOR;
  321.         sprintf( undoMsg, "Undo (%4d)", u[3] );
  322.     } else
  323.     {
  324.         md = MNU_NOR | MNU_IGN;
  325.         strcpy( undoMsg, "Undo");
  326.     }
  327.     MNU_setObj(obj, 0, md, 'U', undoMsg , NULL, TXD_UNDO, NULL, tdp );
  328.  
  329.     if ( TXD_getRedoInfo( txd, u ) == NORMAL && u[3] > 0 )
  330.     {
  331.         md = MNU_NOR;
  332.         sprintf( redoMsg, "Redo (%4d)", u[3] );
  333.     } else
  334.     {
  335.         md = MNU_NOR | MNU_IGN;
  336.         strcpy( redoMsg, "Redo");
  337.     }
  338.     MNU_setObj(obj, 1, md, 'R', redoMsg, NULL, TXD_REDO, NULL, tdp );
  339.  
  340.     MNU_setObj(obj, 2, MNU_BLK,  0,   NULL,                 NULL, 0                 , NULL, NULL);
  341.  
  342.     MNU_setObj(obj, 3, MNU_NOR, '1', "Split 1 left/right",    NULL, TDPCMD_SPLIT_1,   NULL, tdp );
  343.     MNU_setObj(obj, 4, MNU_NOR, '2', "Split 2 up/down",        NULL, TDPCMD_SPLIT_2,   NULL, tdp );
  344.     MNU_setObj(obj, 5, MNU_BLK,  0,   NULL,                    NULL, 0,                NULL, NULL);
  345.     MNU_setObj(obj, 6, MNU_NOR, 'P', "Print CUT-BUFFER",    NULL, TDPCMD_PRINTCBUF, NULL, tdp );
  346.     MNU_setObj(obj, 7, MNU_NOR, 'T', "Text printout",        NULL, TDPCMD_PRINTOUT , NULL, tdp );
  347.     MNU_setObj(obj, 8, MNU_BLK,  0,   NULL,                    NULL, 0,                NULL, NULL);
  348.     MNU_setObj(obj, 9, MNU_NOR, 'C', "Calculator",            NULL, TDPCMD_CALC,      NULL, tdp );
  349.     MNU_setObj(obj,10, MNU_NOR, 'A', "Ascii code list",        NULL, TDPCMD_ASCIICODE, NULL, tdp );
  350.     MNU_setObj(obj,11, MNU_NOR, 'K', "Kanji code list",        NULL, TDPCMD_KANJICODE, NULL, tdp );
  351.  
  352.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU3 (UTILITY)" );
  353.     ret = MNU_start ( mnu );
  354.     MNU_close(mnu);
  355.     MNU_free(obj);
  356.  
  357.     if ( ret > 0 )
  358.         return TDP_cmdJump(tdp,ret);
  359.     else
  360.         return (ret);
  361. }
  362.  
  363.  
  364. #if    0
  365. /*    MNU_setObj(obj, 3, MNU_NOR, '1', "test display"       ,    NULL, 0, "_tdpTestDsp"   , tdp );    */
  366. int        _tdpTestDsp( int evtNo, char *sbj )
  367. {
  368.     char    *tdp;
  369.     char    *txd;
  370.     char    *dlg;
  371.     int        ch;
  372.     UINT    ec;
  373.  
  374.     tdp = GET_EVTSBJ_PTR(sbj);
  375.     txd = TDP_TXDPTR(tdp);
  376.  
  377.     dlg = DLG_msgOpen(DLGPOS_MOS_SET_CENTER,DLGPOS_MOS_SET_CENTER,
  378.         8*32,16*8,C_MBLACK,C_HWHITE,C_HGREEN,"CCI STATUS");
  379.     if ( dlg == NULL )
  380.         return (ERR);
  381.     DLG_msgClear( dlg, -1 );
  382.     DLG_msgPrintf(dlg,"cursor    (%3d,%3d)\r\n", TxdGet_curY(txd), TxdGet_curY(txd) );
  383.     DLG_msgPrintf(dlg,"text size  %8d\r\n", TxdGet_txtSize(txd) );
  384.     DLG_msgPrintf(dlg,"\r\n" );
  385.     while ( 1 )
  386.     {
  387.         ch = EVT_getkey(&ec);
  388.         if ( ch != 0xFFFF )
  389.             break;
  390.     }
  391.     DLG_msgClose(dlg);
  392.     return (NORMAL);
  393. }
  394. #endif
  395.  
  396. #define    TDP_KST_SNAM    ".kst"
  397. #define    TDP_KST_WILD    "*.kst"
  398.  
  399. int        _tdpSaveSetup( int evtNo, char *sbj )
  400. {
  401.     char    *tdp;
  402.     char    *txd;
  403.     char    *fdl;
  404.     int        ret;
  405.     char    tmp[128], *fn;
  406.  
  407.     tdp = GET_EVTSBJ_PTR(sbj);
  408.     txd = TDP_TXDPTR(tdp);
  409.  
  410.     if ( (fdl = FDL_open(0)) == NULL )
  411.         return (ERR);
  412.     FDL_set_title( fdl,"SAVE SETUP");
  413.     FDL_set_wildcard( fdl, TDP_KST_WILD );
  414.     ret = FDL_start(fdl);
  415.     fn  = FDL_get_filename(fdl);
  416.     if ( ret != NORMAL || strlen(fn) == 0 )
  417.     {
  418.         FDL_close(fdl);
  419.         return (ERR);
  420.     }
  421.     FS_appendSnam( tmp, fn, TDP_KST_SNAM );
  422.     TDP_saveKeySetup(tdp,tmp);
  423.     FDL_close(fdl);
  424.  
  425.     return (NORMAL);
  426. }
  427.  
  428.  
  429. int        _tdpLoadSetup( int evtNo, char *sbj )
  430. {
  431.     char    *tdp;
  432.     char    *txd;
  433.     char    *fdl;
  434.     int        ret;
  435.     char    tmp[128], *fn;
  436.  
  437.     tdp = GET_EVTSBJ_PTR(sbj);
  438.     txd = TDP_TXDPTR(tdp);
  439.  
  440.     if ( (fdl = FDL_open(0)) == NULL )
  441.         return (ERR);
  442.     FDL_set_title( fdl,"LOAD SETUP");
  443.     FDL_set_wildcard( fdl, TDP_KST_WILD );
  444.     ret = FDL_start(fdl);
  445.     fn  = FDL_get_filename(fdl);
  446.     if ( ret != NORMAL || strlen(fn) == 0 )
  447.     {
  448.         FDL_close(fdl);
  449.         return (ERR);
  450.     }
  451.     FS_appendSnam( tmp, fn, TDP_KST_SNAM );
  452.     TDP_loadKeySetup(tdp,tmp);
  453.     FDL_close(fdl);
  454.  
  455.     return (NORMAL);
  456. }
  457.  
  458. int        _tdpCallHE386( int evtNo, char *sbj )
  459. {
  460.     char    *tdp;
  461.     char    *pn;
  462.  
  463.     tdp = GET_EVTSBJ_PTR(sbj);
  464.     pn = TdpGet_pn(tdp);        /* 編集ファイル名の取得    */
  465.     he386_menu( pn );
  466.  
  467.     return (NORMAL);
  468. }
  469.  
  470. /*************************************************************************
  471. *    [MENU4]
  472. *************************************************************************/
  473.  
  474. int        TDP_menu_4( char *tdp, int x, int y )
  475. {
  476.     int            ret;
  477.     char        *mnu;
  478.     char        *obj;
  479.  
  480. #ifndef    __HEWM__
  481.     obj = MNU_alloc(7);
  482.     MNU_setObj(obj, 0, MNU_NOR, 'A', "Alphabet buffer"    ,    NULL, TDPCMD_ALBUF_MENU , NULL            , tdp );
  483.     MNU_setObj(obj, 1, MNU_NOR, 'S', "Save key setup data",    NULL, 0                 , "_tdpSaveSetup" , tdp );
  484.     MNU_setObj(obj, 2, MNU_NOR, 'L', "Load key setup data",    NULL, 0                 , "_tdpLoadSetup" , tdp );
  485.     MNU_setObj(obj, 3, MNU_BLK,  0 , NULL                 ,    NULL, 0                 , NULL            , NULL);
  486.     MNU_setObj(obj, 4, MNU_NOR, 'U', "Upload"             ,    NULL, TDPCMD_NTM_UPLOAD , NULL            , tdp );
  487.     MNU_setObj(obj, 5, MNU_BLK,  0 , NULL                 ,    NULL, 0                 , NULL            , NULL);
  488.     MNU_setObj(obj, 6, MNU_NOR, 'M', "MML Compile"        ,    NULL, 0                 , "_tdpCallHE386" , tdp );
  489. #else
  490.     obj = MNU_alloc(5);
  491.     MNU_setObj(obj, 0, MNU_NOR, 'A', "Alphabet buffer"    ,    NULL, TDPCMD_ALBUF_MENU , NULL            , tdp );
  492.     MNU_setObj(obj, 1, MNU_NOR, 'S', "Save key setup data",    NULL, 0                 , "_tdpSaveSetup" , tdp );
  493.     MNU_setObj(obj, 2, MNU_NOR, 'L', "Load key setup data",    NULL, 0                 , "_tdpLoadSetup" , tdp );
  494.     MNU_setObj(obj, 3, MNU_BLK,  0 , NULL                 ,    NULL, 0                 , NULL            , NULL);
  495.     MNU_setObj(obj, 4, MNU_NOR, 'M', "MML Compile"        ,    NULL, 0                 , "_tdpCallHE386" , tdp );
  496. #endif
  497.  
  498.     mnu = MNU_open( x, y, MNUATT_EXIT, obj, "MENU4 (OTHER)" );
  499.     ret = MNU_start ( mnu );
  500.     MNU_close(mnu);
  501.     MNU_free(obj);
  502.  
  503.     if ( ret > 0 )
  504.         return TDP_cmdJump(tdp,ret);
  505.     else
  506.         return (ret);
  507. }
  508.  
  509.  
  510. /*************************************************************************
  511. *    英字バッファのロード(ファイルマネージャから呼ばれる)
  512. *-------------------------------------------------------------------------
  513. *    アイテム登録可能(パラメータ必須)
  514. *    パラメータ:    <ファイル名>
  515. *************************************************************************/
  516.  
  517. int        CCI_loadKbl( int argc, char **argv )
  518. {
  519.     if ( argc > 1 )
  520.     {
  521.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  522.             C_MBLACK, C_DLGBASE, COLMIX(C_TIMEBOX,C_GRAY),
  523.             2, "%s : \n  Load alphabet buffer  ", argv[1] );
  524.         TDP_loadAlBuf(NULL, argv[1]);
  525.     }
  526.     return (NORMAL);
  527. }
  528.  
  529. /*************************************************************************
  530. *    マルチリプレースデータのロード(ファイルマネージャから呼ばれる)
  531. *-------------------------------------------------------------------------
  532. *    アイテム登録可能(パラメータ必須)
  533. *    パラメータ:    <ファイル名>
  534. *************************************************************************/
  535.  
  536. int        CCI_loadRpl( int argc, char **argv )
  537. {
  538.     if ( argc > 1 )
  539.     {
  540.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  541.             C_MBLACK, C_DLGBASE, COLMIX(C_TIMEBOX,C_GRAY),
  542.             2, "%s : \n  Load multi replace data  ", argv[1] );
  543.         TXD_loadRplBuf( argv[1] );
  544.     }
  545.     return (NORMAL);
  546. }
  547.  
  548. int        TDP_menu_5( char *tdp )    {    return (ERR); }
  549. int        TDP_menu_6( char *tdp )    {    return (ERR); }
  550. int        TDP_menu_7( char *tdp )    {    return (ERR); }
  551. int        TDP_menu_8( char *tdp )    {    return (ERR); }
  552.  
  553. int        _tdpSaveColTbl( int evtNo, char *sbj )    /* カラーテーブルの保存    */
  554. {
  555.     char    *tdp;
  556.     char    *txd;
  557.  
  558.     tdp = GET_EVTSBJ_PTR(sbj);
  559.     txd = TDP_TXDPTR(tdp);
  560.     TxdUsr_saveColTbl( txd );
  561.     return (NORMAL);
  562. }
  563.  
  564. /*************************************************************************
  565. *    [SETUP2]
  566. *************************************************************************/
  567.  
  568. int        TDP_setup2( char *tdp )
  569. {
  570.     int            ret;
  571.     char        *mnu;
  572.     char        *obj;
  573.  
  574.     obj = MNU_alloc(2);
  575.     MNU_setObj(obj, 0, MNU_NOR, 'C' , "Change color table",    NULL, TDPCMD_CHGCOLOR , NULL            , tdp );
  576.     MNU_setObj(obj, 1, MNU_NOR, 'S' , "Save color table"  ,    NULL, 0               , "_tdpSaveColTbl", tdp );
  577.  
  578.     mnu = MNU_open( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  579.         MNUATT_EXIT, obj, "SETUP2" );
  580.     ret = MNU_start ( mnu );
  581.     MNU_close(mnu);
  582.     MNU_free(obj);
  583.  
  584.     if ( ret > 0 )
  585.         return TDP_cmdJump(tdp,ret);
  586.     else
  587.         return (ret);
  588. }
  589.  
  590. /*************************************************************************
  591. *    カーソル位置の位置単語をカットバッファに格納
  592. *************************************************************************/
  593.  
  594. int        TxdUsr_cut_word(char *txd )
  595. {
  596.     if ( TxdGet_selFlag(txd) != 0 )        /* 選択中なら処理しない    */
  597.         return (0);
  598.     TXD_cmdJump( txd, TXD_CUTSTART );
  599.     TXD_cmdJump( txd, TXD_NEXTWORD );
  600.     TXD_cmdJump( txd, TXD_CUTEND   );
  601.     return (NORMAL);
  602. }
  603.  
  604. /*************************************************************************
  605. *    行の二重化
  606. *************************************************************************/
  607.  
  608. int        TxdUsr_dup_line( char *txd )
  609. {
  610.     if ( TxdGet_selFlag(txd) != 0 )        /* 選択中なら処理しない                */
  611.         return (0);
  612.     TXD_cmdJump( txd, TXD_TOPOFLINE );    /* カーソルを行頭に                    */
  613.     TXD_cmdJump( txd, TXD_SCBUFSET  );    /* 行末まで行カットバッファに格納    */
  614.     TXD_cmdJump( txd, TXD_CUR_DOWN  );    /* カーソルを下に                    */
  615.     TXD_cmdJump( txd, TXD_SCBUFPASTE);    /* 行カットバッファをペースト        */
  616.  
  617.     return (NORMAL);
  618. }
  619.  
  620. int        _txd_printUndoInf( char *dlg, int *ubuf )
  621. {
  622.     DLG_msgPrintf(dlg,"  最大バッファサイズ %8d bytes\r\n", ubuf[0] );
  623.     DLG_msgPrintf(dlg,"  使用バッファサイズ %8d bytes\r\n", ubuf[1]);
  624.     DLG_msgPrintf(dlg,"  最大回数           %8d 回\r\n"   , ubuf[2] );
  625.     DLG_msgPrintf(dlg,"  現在有効数         %8d 回"       , ubuf[3] );
  626. }
  627.  
  628. /*************************************************************************
  629. *    UNDO情報の表示
  630. *************************************************************************/
  631.  
  632. int        TxdUsr_undo_info( char *txd )
  633. {
  634.     char    *dlg;
  635.     int        ch, x, y;
  636.     int        u[4];
  637.     UINT    ec;
  638.  
  639.     DSP_writePage(1);
  640.     dlg = DLG_msgOpen( DLGPOS_MOS_SET_CENTER,DLGPOS_MOS_SET_CENTER,
  641.         8*38,16*10,C_MBLACK,C_DLGBASE,C_HGREEN,"UNDO/REDO BUFFER INFORMATION");
  642.     if ( dlg == NULL )
  643.         return (ERR);
  644.     DLG_msgClear( dlg, -1 );
  645.  
  646.     if ( TXD_getUndoInfo( txd, u ) == NORMAL )
  647.     {
  648.         DLG_msgPuts(  dlg,"- UNDO -\r\n" );
  649.         _txd_printUndoInf( dlg, u );
  650.         if ( TXD_getRedoInfo( txd, u ) == NORMAL )
  651.         {
  652.             DLG_msgPuts(  dlg,"\r\n- REDO -\r\n" );
  653.             _txd_printUndoInf( dlg, u );
  654.         } else
  655.         {
  656.             DLG_msgPuts(dlg,"\r\n\n REDO機能は使用されていません。\r\n" );
  657.         }
  658.     } else
  659.     {
  660.         DLG_msgPuts(dlg,"\r\n UNDO機能は使用されていません。\r\n" );
  661.     }
  662.  
  663.     while ( 1 )
  664.     {
  665.         ch = EVT_getkey(&ec);
  666.         if ( ch != 0xFFFF || EVT_mos_pget(&x,&y) )
  667.             break;
  668.         EVT_idl();
  669.     }
  670.     DLG_msgClose(dlg);
  671.     EVT_mos_waitBO();
  672.  
  673.     return (NORMAL);
  674. }
  675.  
  676. /*************************************************************************
  677. *    UNDOバッファの初期化
  678. *************************************************************************/
  679.  
  680. int        TxdUsr_clear_undo_buffer( char *txd )
  681. {
  682.     TXD_undo_freeAll( txd );
  683.     return (NORMAL);
  684. }
  685.  
  686. #ifdef    _ESC_MARK_JUMP
  687. int TxdUsr_jump_mark_0( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,0);}
  688. int TxdUsr_jump_mark_1( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,1);}
  689. int TxdUsr_jump_mark_2( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,2);}
  690. int TxdUsr_jump_mark_3( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,3);}
  691. int TxdUsr_jump_mark_4( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,4);}
  692. int TxdUsr_jump_mark_5( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,5);}
  693. int TxdUsr_jump_mark_6( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,6);}
  694. int TxdUsr_jump_mark_7( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,7);}
  695. int TxdUsr_jump_mark_8( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,8);}
  696. int TxdUsr_jump_mark_9( UINT txd ){ UINT tdp; tdp = TxdGet_ptr(txd); return TDP_markJump(tdp,9);}
  697. #endif
  698.  
  699. #if    0    /* めんどくさいからやめた…    */
  700. int        TdpUsr_mifesSetup()
  701. {
  702.     TDP_setPfkey( 1, 0, "メニュー1"  , TDPCMD_MENU1    );
  703.     TDP_setPfkey( 2, 0, "メニュー2"  , TDPCMD_MENU2    );
  704.     TDP_setPfkey( 3, 0, "メニュー3"  , TDPCMD_MENU3    );
  705.     TDP_setPfkey( 4, 0, "画面分" , TDPCMD_SPLIT_1  );
  706.     TDP_setPfkey( 5, 0, "検索↓" , TXD_SEARCHNX    );
  707.     TDP_setPfkey( 6, 0, "行選択" , TXD_LCUTSTART   );
  708.     TDP_setPfkey( 7, 0, "カット" , TXD_CUTDEL      );
  709.     TDP_setPfkey( 8, 0, "コピー" , TXD_CUTEND      );
  710.     TDP_setPfkey( 9, 0, "ペースト"  , TXD_CUTPASTE    );
  711.     TDP_setPfkey(10, 0, "タグJP" , TDPCMD_TAGJUMP  );
  712.  
  713.     TDP_setPfkey( 1, 1, "メニュー4"  , TDPCMD_MENU4    );
  714.     TDP_setPfkey( 2, 1, "メニュー5"  , TDPCMD_MENUSETUP);
  715.     TDP_setPfkey( 3, 1, "メニュー6"  , TDPCMD_MENU2    );
  716.     TDP_setPfkey( 4, 1, "境界換" , TDPCMD_SPLIT_2  );
  717.     TDP_setPfkey( 5, 1, "検索↓" , TXD_SEARCHPV    );
  718.     TDP_setPfkey( 6, 1, "S選択"  , TXD_CUTSTART    );
  719.     TDP_setPfkey( 7, 1, ""       , 0               );
  720.     TDP_setPfkey( 8, 1, ""       , 0               );
  721.     TDP_setPfkey( 9, 1, "ペースト"  , TXD_CUTPASTE    );
  722.     TDP_setPfkey(10, 1, ""       , 0               );
  723.  
  724.     return (NORMAL);
  725. }
  726. #endif
  727.  
  728. #include    "tdptmp.cci"
  729. #include    "tdpmml.cci"
  730. #include    "tdpwhlp.cci"
  731.